<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    // 1.遍历器（Iterator）它是一种接口，为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口，就可以完成遍历操作（即依次处理该数据结构的所有成员）。
    // 2.ES6 创造了一种新的遍历命令for...of循环，Iterator 接口主要供for...of消费。

    // 3.一个数据结构只要部署了Symbol.iterator属性，就被视为具有 iterator 接口

    // 4.for...of是目前最优秀的遍历方式。

    let str = 'hello';

    for (let value of str) { //value:值
        console.log(value);
    }

    let arr = ['zhangsan', 'lisi', 'wangwu'];

    for (let v of arr) {
        console.log(v);
    }

    let obj = {
        a: 1,
        b: 2,
        c: 3
    };

    for (let key of obj) {
        console.log(key); //报错：obj is not iterable
    }

    console.log(str[Symbol.iterator]);
    console.log(arr[Symbol.iterator]);
    console.log(obj[Symbol.iterator]); // undefined 对象不可以使用for...of...
</script>